contents

파티셔닝과 샤딩은 대규모 데이터베이스를 관리하고 확장하기 위한 두 가지 중요한 기술입니다. 종종 혼용되어 사용되지만, 두 용어는 뚜렷한 의미를 가집니다.

간단히 말해, 파티셔닝은 큰 데이터베이스 테이블을 더 작고 관리하기 쉬운 조각으로 나누는 일반적인 개념입니다. 샤딩은 이러한 조각들을 여러 개의 개별 서버에 분산시키는 특정 _유형_의 파티셔닝, 즉 수평 파티셔닝을 의미합니다.


파트 1: 데이터베이스 파티셔닝 (일반적인 개념) 🔪

데이터베이스 파티셔닝은 테이블이나 인덱스와 같은 큰 데이터베이스 객체를 더 작고 독립적인 부분으로 나누는 과정입니다. 이러한 부분, 즉 파티션들은 동일한 데이터베이스 서버 내에서 별도로 저장되고 관리될 수 있습니다.

파티셔닝의 주요 목표는 다음과 같습니다.

파티셔닝의 종류

A. 수평 파티셔닝 (행 기반 분할)

가장 일반적인 유형의 파티셔닝입니다. 테이블을 행(row) 을 기준으로 여러 개의 작은 테이블로 분할합니다. 각 파티션은 동일한 열을 가지지만, 서로 다른 행의 하위 집합을 포함합니다.

B. 수직 파티셔닝 (열 기반 분할)

이 방식에서는 테이블을 열(column) 을 기준으로 분할합니다. 일부 열은 새 테이블로 이동하고, 나머지 열은 그대로 유지됩니다. 새로운 테이블들은 동일한 수의 행을 공유합니다.


파트 2: 데이터베이스 샤딩 (수평 확장) 🚀

샤딩은 데이터를 여러 개의 다른 데이터베이스 서버에 분산시키는 수평 파티셔닝의 특정 구현 방식입니다. 각 서버는 샤드(shard) 가 되며, 전체 데이터셋의 일부를 보유합니다.

샤딩의 주요 목표는 수평적 확장성(스케일 아웃) 입니다. 단일 서버는 CPU, RAM, 디스크 공간에 한계가 있습니다(수직적 확장). 샤딩은 데이터와 작업 부하를 여러 서버에 분산시킴으로써 이러한 한계를 극복합니다.

샤딩 전략 (데이터 분할 방법)

어떤 데이터를 어느 샤드에 넣을지는 샤드 키(shard key) 에 의해 결정됩니다. 이는 user_idcustomer_id와 같이 테이블의 특정 열(또는 여러 열)입니다.

A. 키 기반 샤딩 (해시 샤딩)

가장 일반적인 전략입니다. 샤드 키를 해시 함수에 통과시킨 후, 해시 함수의 출력이 데이터가 속할 샤드를 결정합니다.

B. 범위 기반 샤딩

샤드 키 값의 범위를 기준으로 데이터를 파티셔닝합니다.

C. 디렉터리 기반 샤딩

조회 테이블("디렉터리")이 어떤 샤드가 어떤 데이터를 보유하고 있는지에 대한 매핑을 유지합니다.


요약: 파티셔닝 vs. 샤딩

특징 파티셔닝 샤딩
정의 데이터를 더 작은 조각으로 나누는 일반적인 개념 파티셔닝의 한 유형 (수평)
범위 단일 데이터베이스 서버 내에서 가능 항상 여러 데이터베이스 서버에 걸쳐 있음
주요 목표 관리 용이성, 성능 확장성

샤딩의 어려움

샤딩은 매우 강력하지만 상당한 복잡성을 야기합니다.

references